﻿using System;
using Sinacor.Infra.Service.Common;
using Sinacor.Infra.Service.Validation;

namespace Sinacor.Servico.Bovespa.Ordens.BusinessEntity
{
    /// <summary>
    /// BusinessEntity Class - BaseBusinessEntity
    /// </summary>
    public class AjusteMercadoFuturo : BaseBusinessEntity
    {
        #region Atributos

        private System.Int32 _anoPregao;
        private System.String _codigoNegocio;
        private System.DateTime _dataPregao;
        private System.Decimal? _fator;
        private System.Decimal? _precoExercicio;
        private BusinessEntity.Enum.TipoMercado _tipo;
        private System.Decimal? _valorAjusteAnterior;
        private System.Decimal? _valorAjusteAtual;
        private System.Decimal? _variacao;

        #endregion

        #region Propriedades

        /// <summary>
        /// Ano do pregão
        /// </summary>        
        public System.Int32 AnoPregao
        {
            get { return _anoPregao; }
            set { _anoPregao = value; }
        }

        /// <summary>
        /// Código do negócio
        /// </summary> 
        [NotNull(109021, "GrupoValidacao1")]
        [NotEmpty(109021, "GrupoValidacao1", true)]
        public System.String CodigoNegocio
        {
            get { return _codigoNegocio; }
            set { _codigoNegocio = value; }
        }

        /// <summary>
        /// Data do pregão
        /// </summary>     
        [NotNull(109019, "GrupoValidacao1")]
        public System.DateTime DataPregao
        {
            get { return _dataPregao; }
            set { _dataPregao = value; }
        }

        /// <summary>
        /// Fator
        /// </summary>        
        public System.Decimal? Fator
        {
            get { return _fator; }
            set { _fator = value; }
        }

        /// <summary>
        /// Preço do exercício
        /// </summary>        
        public System.Decimal? PrecoExercicio
        {
            get { return _precoExercicio; }
            set { _precoExercicio = value; }
        }

        /// <summary>
        /// Tipo do mercado
        /// </summary>        
        public BusinessEntity.Enum.TipoMercado Tipo
        {
            get { return _tipo; }
            set { _tipo = value; }
        }

        /// <summary>
        /// Ajuste D - 1
        /// </summary>   
        [NotNull(109022, "GrupoValidacao1")]
        [NotNegative(109027, "GrupoValidacao2")]
        public System.Decimal? ValorAjusteAnterior
        {
            get { return _valorAjusteAnterior; }
            set { _valorAjusteAnterior = value; }
        }

        /// <summary>
        /// Ajuste D + 0
        /// </summary>  
        [NotNull(109023, "GrupoValidacao1")]
        [NotNegative(109028, "GrupoValidacao2")]
        public System.Decimal? ValorAjusteAtual
        {
            get { return _valorAjusteAtual; }
            set { _valorAjusteAtual = value; }
        }

        /// <summary>
        /// Variacao
        /// </summary>        
        public System.Decimal? Variacao
        {
            get { return _variacao; }
            set { _variacao = value; }
        }

        #endregion
    }
}